Person   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 107
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 10
eloc 32
dl 0
loc 107
c 0
b 0
f 0
rs 10

10 Functions

Rating   Name   Duplication   Size   Complexity  
A externalIDs 0 9 1
A translations 0 9 1
A taggedImages 0 9 1
A changes 0 11 1
A images 0 9 1
A combinedCredits 0 9 1
A details 0 10 1
A tvCredits 0 9 1
A latest 0 9 1
A movieCredits 0 9 1
1
import { BaseEndpoint, QueryParameters, QueryDateLimiter } from './baseEndpoint';
2
import {
3
    PersonDetailsResponse,
4
    PersonChangesResponse,
5
    PersonMovieCreditsResponse,
6
    PersonTVCreditsResponse,
7
    PersonCombinedCreditsResponse,
8
    PersonExternalIDResponse,
9
    PersonImagesResponse,
10
    PersonTaggedImagesResponse,
11
    PersonTranslationsResponse,
12
} from '../interfaces/person';
13
14
/**
15
 * Person Endpoint Class
16
 */
17
export class Person extends BaseEndpoint {
18
19
    /**
20
     * Get the primary person details by id.
21
     * @param { number } personID
22
     * @param { QueryParameters } parameters
23
     * @return { Promise<PersonDetailsResponse> }
24
     * @see https://developers.themoviedb.org/3/people/get-person-details
25
     */
26
    public async details(personID: number, parameters: QueryParameters = {}): Promise<PersonDetailsResponse> {
27
        return this.sendGetRequest(`person/${personID}`);
28
    }
29
30
    /**
31
     * Get the changes for a person. By default only the last 24 hours are returned.
32
     * You can query up to 14 days in a single query by using the `start_date` and `end_date` query parameters.
33
     * @param { number } personID
34
     * @param { QueryDateLimiter } parameters
35
     * @return { Promise<PersonChangesResponse> }
36
     * @see https://developers.themoviedb.org/3/people/get-person-changes
37
     */
38
    public async changes(personID: number, parameters: QueryDateLimiter = {}): Promise<PersonChangesResponse> {
39
        return this.sendGetRequest(`person/${personID}/changes`, parameters as QueryParameters);
40
    }
41
42
    /**
43
     * Get the movie credits for a person.
44
     * @param { number } personID
45
     * @return { Promise<PersonMovieCreditsResponse> }
46
     * @see https://developers.themoviedb.org/3/people/get-person-movie-credits
47
     */
48
    public async movieCredits(personID: number): Promise<PersonMovieCreditsResponse> {
49
        return this.sendGetRequest(`person/${personID}/movie_credits`);
50
    }
51
52
    /**
53
     * Get the tv credits for a person.
54
     * @param { number } personID
55
     * @return { Promise<PersonTVCreditsResponse> }
56
     * @see https://developers.themoviedb.org/3/people/get-person-tv-credits
57
     */
58
    public async tvCredits(personID: number): Promise<PersonTVCreditsResponse> {
59
        return this.sendGetRequest(`person/${personID}/tv_credits`);
60
    }
61
62
    /**
63
     * Get the movie and TV credits together in a single response.
64
     * @param { number } personID
65
     * @return { Promise<PersonCombinedCreditsResponse> }
66
     * @see https://developers.themoviedb.org/3/people/get-person-combined-credits
67
     */
68
    public async combinedCredits(personID: number): Promise<PersonCombinedCreditsResponse> {
69
        return this.sendGetRequest(`person/${personID}/combined_credits`);
70
    }
71
72
    /**
73
     * Get the external ids for a person.
74
     * @param { number } personID
75
     * @return { Promise<PersonExternalIDResponse> }
76
     * @see https://developers.themoviedb.org/3/people/get-person-external-ids
77
     */
78
    public async externalIDs(personID: number): Promise<PersonExternalIDResponse> {
79
        return this.sendGetRequest(`person/${personID}/external_ids`);
80
    }
81
82
    /**
83
     * Get the images for a person.
84
     * @param { number } personID
85
     * @return { Promise<PersonImagesResponse> }
86
     * @see https://developers.themoviedb.org/3/people/get-person-images
87
     */
88
    public async images(personID: number): Promise<PersonImagesResponse> {
89
        return this.sendGetRequest(`person/${personID}/images`);
90
    }
91
92
    /**
93
     * Get the images that this person has been tagged in.
94
     * @param { number } personID
95
     * @return { Promise<PersonTaggedImagesResponse> }
96
     * @see https://developers.themoviedb.org/3/people/get-tagged-images
97
     */
98
    public async taggedImages(personID: number): Promise<PersonTaggedImagesResponse> {
99
        return this.sendGetRequest(`person/${personID}/tagged_images`);
100
    }
101
102
    /**
103
     * Get a list of translations that have been created for a person.
104
     * @param { number } personID
105
     * @return { Promise<PersonTranslationsResponse> }
106
     * @see https://developers.themoviedb.org/3/people/get-person-translations
107
     */
108
    public async translations(personID: number): Promise<PersonTranslationsResponse> {
109
        return this.sendGetRequest(`person/${personID}/translations`);
110
    }
111
112
    /**
113
     * Get the most newly created person.
114
     * This is a live response and will continuously change.
115
     * @return { Promise<PersonDetailsResponse> }
116
     * @see https://developers.themoviedb.org/3/people/get-latest-person
117
     */
118
    public async latest(): Promise<PersonDetailsResponse> {
119
        return this.sendGetRequest(`person/latest`);
120
    }
121
122
}
123